
// Boost Includes ==============================================================
#include <boost/python.hpp>
#include <boost/cstdint.hpp>

// Includes ====================================================================
#include <OpenSG/OSGLine.h>
#include <OpenSG/OSGPlane.h>

// Using =======================================================================
using namespace boost::python;

// Module ======================================================================
void Export_src_pyste_Plane()
{
    class_< osg::Plane >("Plane", init<  >())
        .def(init< const osg::Plane& >())
        .def(init< const osg::Pnt3f&, const osg::Pnt3f&, const osg::Pnt3f& >())
        .def(init< const osg::Vec3f&, osg::Real32 >())
        .def(init< const osg::Vec3f&, const osg::Pnt3f& >())
        .def("offset", &osg::Plane::offset)
        .def("intersect", (bool (osg::Plane::*)(const osg::Plane&, osg::Line&) const)&osg::Plane::intersect)
        .def("intersect", (bool (osg::Plane::*)(const osg::Line&, osg::Pnt3f&) const)&osg::Plane::intersect)
        .def("intersect", (bool (osg::Plane::*)(const osg::Line&, osg::Real32&) const)&osg::Plane::intersect)
        .def("intersectInfinite", (bool (osg::Plane::*)(const osg::Line&, osg::Real32&) const)&osg::Plane::intersectInfinite)
        .def("intersectInfinite", (bool (osg::Plane::*)(const osg::Line&, osg::Pnt3f&) const)&osg::Plane::intersectInfinite)
        .def("transform", &osg::Plane::transform)
        .def("clip", &osg::Plane::clip)
        .def("isOnPlane", &osg::Plane::isOnPlane)
        .def("isInHalfSpace", (bool (osg::Plane::*)(const osg::Pnt3f&) const)&osg::Plane::isInHalfSpace)
        .def("distance", &osg::Plane::distance)
        .def("isInHalfSpace", (bool (osg::Plane::*)(const osg::Pnt3f&, const osg::Pnt3f&) const)&osg::Plane::isInHalfSpace)
        .def("isOutHalfSpace", &osg::Plane::isOutHalfSpace)
        .def("set", (void (osg::Plane::*)(const osg::Vec3f&, osg::Real32) )&osg::Plane::set)
        .def("set", (void (osg::Plane::*)(osg::Real32, osg::Real32, osg::Real32, osg::Real32) )&osg::Plane::set)
        .def("set", (void (osg::Plane::*)(const osg::Vec4f&) )&osg::Plane::set)
        .def("getNormal", &osg::Plane::getNormal, return_internal_reference< 1 >())
        .def("getDistanceFromOrigin", &osg::Plane::getDistanceFromOrigin)
        .def("setDirectionIndexPoint", &osg::Plane::setDirectionIndexPoint)
        .def( self == self )
        .def( self_ns::str(self) )
        .def( self != self )
    ;

}

